<?php

namespace app\applet\controller;

use app\share\model\Token;
use app\share\model\WeChat;
use think\Validate;

class Order
{
    public function __construct()
    {
         $this->Order = new \app\applet\model\Order();
        $this->we_chat = new WeChat();
        $this->token = new Token();

    }

    /**
     * 确认订单
     */
    public function sureOrder()
    {
        $input = input();
        $validate = new Validate([
            ['goods_id', 'require', '商品ID不能为空'],
            ['goods_num', 'require', '商品数量不能为空'],
            ['spec_id', 'require', '商品规格ID不能为空'],
            ['source_type', 'require', '订单来源不能为空'],
        ]);
        if(!$validate->check($input))
        {
            returnJson(-2003,$validate->getError());
        }

        $input['member_id'] = get_header_id("token");

        //获取确认订单详情
        $sureOrder=$this->Order->getSureOrder($input);

        returnJson(200,'success',$sureOrder);

    }

    /**
     * 购物车列表确认订单
     */
    public function sureCartOrder()
    {
        $input = input();
        $validate = new Validate([
            ['store_id', 'require', '店铺ID不能为空'],
            ['cart_list', 'require', '购物车选中商品参数不能为空'],
            ['source_type', 'require', '订单来源不能为空'],
        ]);
        if(!$validate->check($input))
        {
            returnJson(-2003,$validate->getError());
        }
        $input['member_id'] = get_header_id("token");

        $this->Order->getCartSureOrder($input);


    }

    /**
     * 创建订单
     */
    public function createOrder(){
        $input = input();
        $validate = new Validate([
            ['goods_id', 'require', '商品ID不能为空'],
            ['goods_num', 'require', '商品数量不能为空'],
            ['spec_id', 'require', '商品规格ID不能为空'],
            ['ma_id', 'require', '收货地址ID不能为空'],
            ['pay_method', 'require', '请选择支付方式'],
            ['source_type', 'require', '订单来源不能为空'],
        ]);
        if(!$validate->check($input))
        {
            returnJson(-2003,$validate->getError());
        }

        $input['member_id'] = get_header_id("token");

        //创建订单
        $this->Order->createOrder($input);
    }


    /**
     * 创建购物车订单
     */
   public function createCartOrder(){
       $input = input();
       $validate = new Validate([
           ['store_id', 'require', '店铺ID不能为空'],
           ['cart_list', 'require', '购物车选中商品参数不能为空'],
           ['order_token', 'require', '令牌不能为空'],
           ['ma_id', 'require', '收货地址ID不能为空'],
           ['pay_method', 'require', '请选择支付方式'],
           ['source_type', 'require', '订单来源不能为空'],
           ]);
       if(!$validate->check($input))
       {
           returnJson(-2003,$validate->getError());
       }
       $input['member_id'] = get_header_id("token");
       //$input['member_id'] = 57;

       $this->Order->createCartOrder($input);
   }

    /**
     * 取消支付
     */
    public function cancelPay(){
        $input = input();
        $validate = new Validate([
            ['order_sn', 'require', '订单号不能为空'],
        ]);
        if(!$validate->check($input))
        {
            returnJson(-2003,$validate->getError());
        }
        $input['member_id']= get_header_id("token");

        $returnData=$this->Order->cancelOrder($input);
        returnJson(200,'success',$returnData);

    }


    /**
     * 更改地址计算运费
     */
    public function computeOrderFee(){

        $input = input();
        $validate = new Validate([
            ['goods_id', 'require', '商品ID不能为空'],
            ['goods_num', 'require', '商品数量不能为空'],
            ['spec_id', 'require', '商品规格ID不能为空'],
            ['ma_id', 'require', '收货地址ID不能为空'],
            ['source_type', 'require', '订单来源不能为空'],
        ]);
        if(!$validate->check($input))
        {
            returnJson(-2003,$validate->getError());
        }

        $input['member_id'] = get_header_id("token");
        //更改地址计算运费
        $this->Order->computeOrderFee($input);
    }

    /**
     * 购物车订单更改地址计算运费
     */
    public function computeCartOrderFee(){

        $input = input();
        $validate = new Validate([
            ['store_id', 'require', '店铺ID不能为空'],
            ['cart_list', 'require', '购物车选中商品参数不能为空'],
            ['ma_id', 'require', '收货地址ID不能为空'],
            ['source_type', 'require', '订单来源不能为空'],
        ]);
        if(!$validate->check($input))
        {
            returnJson(-2003,$validate->getError());
        }

        $input['member_id'] = get_header_id("token");

        //更改地址计算运费
        $this->Order->computeCartOrderFee($input);
    }
}